package com.glela.goods.service;

import java.util.List;

import com.glela.goods.model.vo.CategorySelectVo;
import com.glela.goods.model.vo.StoreResponse;
import com.glela.goods.model.vo.StoreVo;
import com.glela.goods.model.vo.brand.BrandHotVo;
import com.glela.goods.model.vo.brand.BrandUserEnjoyVo;
import com.glela.goods.model.vo.brand.BrandVo;
import com.glela.platform.model.User;

public interface BrandService {

	/**
	 * 所有的品牌
	 * 
	 * @author houmf
	 * @param id
	 * @return
	 * 
	 * 		public ResponsePageModel<?> selectBrandAll();
	 */

	/**
	 * 根据id查询品牌名称
	 * 
	 * @param id
	 * @return
	 */
	public BrandVo selectBrandById(int id);

	/**
	 * 根据id查询品牌名称
	 * 
	 * @param id
	 * @return
	 */
	public BrandVo selectBrandById(int id, long userId);

	/**
	 * 首页人气品牌展示
	 * 
	 * @author 卫耀华
	 * @return
	 */
	public List<BrandHotVo> getHotBrand();

	/**
	 * 获取用户喜欢的品牌
	 * 
	 * @author 卫耀华
	 * 
	 * @param userId
	 * @return
	 */
	public List<BrandUserEnjoyVo> getBrandsUserEnjoy(long userId);

	/**
	 * 获取所有品牌
	 * 
	 * @return
	 */
	public List<BrandVo> getAllBrands();

	/**
	 * 根据用户ID和品牌ID去查用户是否已经点击关注喜欢了这个品牌
	 * 
	 * @param userId
	 * @param brandId
	 * @return
	 */
	public int countBrandsByUserIdAndBrandId(long userId, int brandId);

	/**
	 * 保存用户喜欢这个品牌
	 * 
	 * @param userId
	 * @param brandId
	 */
	public void saveBrandUserEnjoy(long userId, int brandId);

	/**
	 * 取消关注此品牌
	 * 
	 * @param userId
	 * @param brandId
	 */
	public void deleteBrandUserEnjoyByUserIdAndBrandId(long userId, int brandId);

	/**
	 * 品牌表中喜欢人数这个字段加1
	 */
	public void updateLikeCountById(int brandId);

	/**
	 * 根据品牌ID获取店铺列表(欲购专用)
	 * 
	 * @author 衛耀華
	 * @param brandId品牌ID
	 * @param lat纬度
	 * @param lng经度
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	public List<StoreResponse> getAllStoreListByBrandId(int brandId, String lat, String lng, int startIndex,
			Integer pageSize);

	/**
	 * 某品牌下的店铺列表（校妆专用）
	 * 
	 * @param brandId
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	public List<StoreResponse> getStoresByBrandId(int brandId, int startIndex, Integer pageSize);

	/**
	 * 该品牌下店铺数量
	 * 
	 * @param brandId
	 * @return
	 */
	public int countStoreNumByBrandId(int brandId);

	/**
	 * 首页精选分类
	 * 
	 * @return
	 */
	public List<CategorySelectVo> getCategorySelect();

	/**
	 * 根据店铺ID获取店铺信息（内部调用）
	 * 
	 * @author 卫耀华
	 * @param storeId
	 * @return
	 */
	public StoreVo getStoreById(long storeId);

	public void updateLikeNumSubtract1ByBrandId(int brandId);

	/**
	 * 品牌热搜词
	 * 
	 * @author 卫耀华
	 * @return
	 */
	public List<String> getHotSearchWords();

	public List<BrandVo> esSearchBrand(String searchKeyWord, int pageStart, int pageSize) throws Exception;

	public int userLoveThisBrandOrNot(int brandId, long userId);
}
